<div class="generalText">

<h2>FeyaSoft Architecture - Goals</h2>

Architectural choices usually have the biggest impact on productivity throughout the 
project lifecycle. For system design, we will try following the most valuable techniques 
for boosting productivity.

<br><br>
<img src="/public/images/icons/tick.png"/>&nbsp;&nbsp;
Avoid unnecessary architectural and implementation complexity.
<br><br>
Try to use the simplest architecture that can meet business requirements. 
"The simplest thing that can possibly work" is the best. Every line of 
unnecessary code means it must be written, tested and maintained for the 
lifetime of application. Do not use a distributed architecture without good reason. 
Do not use EJB without good reason.

<br><br>
<img src="/public/images/icons/tick.png"/>&nbsp;&nbsp;
Use widely adopted open source to hide low-level API complexity.
<br><br>
Open source solutions become widely adopted only if they're reliable and deliver value. 
Using those valuable open sources will buy us more time and better performance for 
the project. Do not develop in-house infrastructure to solve standard problem, 
such as resource management, transaction management or logging.

<br><br>
<img src="/public/images/icons/tick.png"/>&nbsp;&nbsp;
Try to use an O/R mapping product to simplify the persistence layer.
<br><br>
Most of application is data-driven application. Data access plays an important role 
in the application developing process. Because of the impedance mismatch between 
relational and object models, writing code to access a relational database can 
account for a significant proportion of development effort in J2EE application. 
If it can, we strongly recommend using a technology such as Hibernate or JDO that 
delivers simple yet powerful O/R mapping. This will make our project become real 
"transparent" between application and database. 

<br><br>
<img src="/public/images/icons/tick.png"/>&nbsp;&nbsp;
Use a good application framework.
<br><br>
Developers have long realized the importance of using standard framework, such as 
Struts, for the web tier. To achieve declarative transaction managerment, we choose 
more powerful framework, Spring, as our application framework. 

<br><br>
</div>

<link href="/public/css/window/doc.css" rel="stylesheet" type="text/css">